Peer to peer (P2P) computer networks utilize connectivity between participants in a network that does not require centralized control or hierarchical organization. Unlike conventional client-server type networks, P2P services or content can be provided by any peer node in the P2P network. The peer nodes provide resources such as bandwidth, processing capabilities and storage capacity, and so in contrast to a conventional client-server network, adding more peer nodes increases the performance and capabilities of the network. P2P networks are also more robust than client-server networks, as peers can obtain the data or services they need from one of many peers, rather rely on one of a few centralized servers.
Another advantage that the lack of centralized servers gives in a P2P network is that individuals can cooperate to form P2P networks without investing in additional high-performance hardware to coordinate it. Furthermore, P2P networks provide a way to aggregate and make use of the tremendous computation and storage resources that remain unused on idle individual computers.
When a peer node wishes to obtain content or services from another peer node in a P2P network, it may decide which other peer node (or peer nodes) to use by measuring latency. Latency measurement techniques, such as sending a ping and receiving a response, give an indication of how quickly the two nodes can exchange data, but provide little more information.
In some circumstances, it may be desirable for a peer node to estimate how close other peer nodes are. Latency measurements can to a certain degree assist with this, but are not entirely reliable. For example, a latency measurement from a close peer node via a poor connection may be higher than a latency measurement from a remote node via a good connection. Furthermore, latency measurements need to be periodically updated, increasing the signalling load in the network.